package com.niuwa.p2p.dao.user;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.niuwa.p2p.dao.MyBatisDao;
import com.niuwa.p2p.entity.role.Role;
import com.niuwa.p2p.entity.user.User;

/**
 * 
 * @ClassName: UserDao
 * @Descriptio 用户DAO接口     
 * @author:    jishengjun
 */
@MyBatisDao
public interface UserDao {
	
	
	/**
	 * 获取符合条件的用户数
	 * @param paramMap
	 * @return
	 */
	public int getUserCountByCondition(Map<String, Object> paramMap);
	/**
	 * 获取符合条件的用户列表
	 * @return
	 * @throws SQLException
	 */
	public List<User> getUserByCondition(Map<String, Object> paramMap);

	/**
	 * 选取全部用户
	 * 
	 * @return List<User> 用户集合
	 * @throws Exception
	 */
	public List<User> selectUserAll() throws Exception;	
	
	
	/**
	 * 通过用户ID 选取单个用户 
	 * 
	 * @param  id   用户id
	 * @return User 用户实体
	 * @throws Exception
	 */
	public User selectByUserId(long id) throws Exception;
	
	/**
	 * 通过登陆名  选取单个用户 
	 * 
	 * @param  id   用户id
	 * @return User 用户实体
	 * @throws Exception
	 */
	public User selectByLoginName(String loginName) throws Exception;
	
	/**
	 * 添加用户
	 * 
	 * @param user 添加的用户对象
	 * @throws Exception
	 */
	public void insertUser(User user) throws Exception;
	
	
	/**
	 * 更新用户
	 * 
	 * @param user 更新的用户对象
	 * @throws Exception
	 */
	public int updateByUserSelective(User user) throws Exception;
	
	/**
	 * 删除用户
	 * 
	 * @param user 删除对象的用户id
	 * @throws Exception
	 */
	public int deleteByUserID(long id) throws Exception;
	  
	/**
	 * 统计用户个数
	 * 根据paramMap，统计出需要的用户数
	 * 例：适用于分页的时候，选取当前页的用户条数
	 * 
	 * @param paramMap 过滤得条件Map
	 * @return 总用户数
	 */
	public int count(Map<String, Object> paramMap);

	
	/**
	 * 选取用户集合
	 * 根据paramMap，选取需要的用户集合
	 * 例：适用于分页的时候，选取当前页的用户集合
	 * 
	 * @param paramMap 过滤得条件Map
	 * @return List<User> 用户集合 
	 */
	public List<User> selectUserBySelective(Map<String, Object> paramMap);
	
	
	
   /**
   * 
   * @param userNameMap
   * @return
   */


	public List<HashMap<String,String>> findByName(Map<String, String> userNameMap);

	
	
	/**
	 * 
	 * @param paramMap
	 * @return
	 */
	public User getUser(Map<String, String>  paramMap);
	
	
	/**
	 * 
	 * @param paramMap
	 * @return
	 */
    public List<HashMap<String, String>> getUserResources(HashMap<String, String> paramMap);

	/**
	 * 登陆
	 * @param  loginName  用户名
	 * @return password 用户密码
	 * @throws Exception
	 */
	public User login(String loginName,String password) throws Exception;
	
	
	/**
	 * 
	 *根据登入名查询密码
	 * @param loginName
	 * @return password
	 *
	 */
	public String getPasswordByLoginName(String loginName);
	
	
	
	/**
	 * 判断登入名称是否已经存在
	 * @param user
	 * @return
	 */
	public List<User> searchUserByloginName(String loginName);
	
	/**
	 * 
	 *新增用户
	 * @param paramMap
	 *
	 */
	public void addUser(Map<String, Object> userParamMap);
	
	
	/**
	 * 
	 *删除用户对应的角色关系
	 * @param userId
	 * @return
	 *
	 */
	public int deleteUserRole(Long userId);

}
